home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 1) (1997).iso / intros / 64k / revolt / sources / rotatem.as3 < prev    next >
Text File  |  1995-12-26  |  4KB  |  184 lines

  1.  
  2. ;     matrix-rotations with 6 muls...mem rulez=only sin table!
  3. ;    by Warlock/AMNESTY...
  4.  
  5. jumps
  6.  
  7. .386p
  8. CODE32 SEGMENT PARA PUBLIC USE32
  9. ASSUME cs:CODE32, ds:CODE32
  10.  
  11.         PUBLIC    angleX
  12.         PUBLIC    angleY
  13.         PUBLIC    angleZ
  14.         PUBLIC    _rotatem
  15.         PUBLIC    sin
  16.  
  17.         angleX    dd 0
  18.         angleY    dd 0
  19.         angleZ    dd 0
  20.  
  21. _rotatem:    
  22.         mov    eax,angleX
  23.         and    eax,0ffh
  24.         movsx    ebx, word ptr [sin+eax*2]
  25.         mov    sin1,ebx
  26.         add    eax,64
  27.         and    eax,0ffh
  28.         movsx    ebx, word ptr [sin+eax*2]
  29.         mov    cos1,ebx
  30.         mov    eax,angleY
  31.         and    eax,0ffh
  32.         movsx    ebx, word ptr [sin+eax*2]
  33.         mov    sin2,ebx
  34.         add    eax,64
  35.         and    eax,0ffh
  36.         movsx    ebx, word ptr [sin+eax*2]
  37.         mov    cos2,ebx
  38.         mov    eax,angleZ
  39.         and    eax,0ffh
  40.         movsx    ebx, word ptr [sin+eax*2]
  41.         mov    sin3,ebx
  42.         add    eax,64
  43.         and    eax,0ffh
  44.         movsx    ebx, word ptr [sin+eax*2]
  45.         mov    cos3,ebx
  46.         mov    eax,cos3
  47.         imul    dword ptr [cos2]
  48.         shrd    eax,edx,10
  49.         mov    dword ptr [matrix],eax
  50.         mov    eax,sin2
  51.         neg    eax
  52.         mov    dword ptr [matrix+24],eax
  53.         mov    eax,sin3
  54.         imul    dword ptr [cos2]
  55.         shrd    eax,edx,10
  56.         mov    dword ptr [matrix+12],eax
  57.         mov    eax,sin3
  58.         imul    dword ptr [cos1]
  59.         shrd    eax,edx,10
  60.         mov    s3c1,eax
  61.         mov    eax,sin3
  62.         imul    dword ptr [sin1]
  63.         shrd    eax,edx,10
  64.         mov    s3s1,eax
  65.         mov    eax,cos3
  66.         imul    dword ptr [sin2]
  67.         shrd    eax,edx,10
  68.         mov    c3s2,eax
  69.         imul    dword ptr [sin1]
  70.         shrd    eax,edx,10
  71.         neg    eax
  72.         sub    eax,s3c1
  73.         mov    dword ptr [matrix+4],eax
  74.         mov    eax,c3s2
  75.         imul    dword ptr [cos1]
  76.         shrd    eax,edx,10
  77.         sub    eax,s3s1
  78.         mov    dword ptr [matrix+8],eax
  79.         mov    eax,s3s1
  80.         imul    dword ptr [sin2]
  81.         shrd    eax,edx,10
  82.         mov    ebx,eax
  83.         mov    eax,cos3
  84.         imul    dword ptr [cos1]
  85.         shrd    eax,edx,10
  86.         sub    eax,ebx
  87.         mov    dword ptr [matrix+16],eax
  88.         mov    eax,cos2
  89.         imul    dword ptr [sin1]
  90.         shrd    eax,edx,10
  91.         neg    eax
  92.         mov    dword ptr [matrix+28],eax
  93.         mov    eax,cos2
  94.         imul    dword ptr [cos1]
  95.         shrd    eax,edx,10
  96.         mov    dword ptr [matrix+32],eax
  97.         mov    eax,s3c1
  98.         imul    dword ptr [sin2]
  99.         shrd    eax,edx,10
  100.         mov    ebx,eax
  101.         mov    eax,cos3
  102.         imul    dword ptr [sin1]
  103.         shrd    eax,edx,10
  104.         add    eax,ebx
  105.         mov    dword ptr [matrix+20],eax        
  106.         mov    eax,dword ptr [matrix]
  107.         imul    dword ptr [matrix+4]
  108.         mov    ab1,eax
  109.         mov    eax,dword ptr [matrix+12]
  110.         imul    eax,dword ptr [matrix+16]
  111.         mov    ab2,eax
  112.         mov    eax,dword ptr [matrix+24]
  113.         imul    dword ptr [matrix+28]
  114.         mov    ab3,eax
  115.     rotloop:
  116.         movsx    eax,word ptr [esi]
  117.         movsx    ebx,word ptr [esi+2]
  118.         imul    ebx
  119.         mov    xy,eax    ;next constant:) per 3d-point!
  120.         movsx    eax, word ptr [esi]
  121.         movsx    ebx, word ptr [esi+2]
  122.         add    eax,dword ptr [matrix+4]
  123.         add    ebx,dword ptr [matrix]
  124.         imul    ebx
  125.         sub    eax,xy
  126.         sub    eax,ab1
  127.         sar    eax,10
  128.         mov    ebx,eax
  129.         movsx    eax,word ptr [esi+4]
  130.         imul    eax,dword ptr [matrix+8]
  131.         sar    eax,10
  132.         add    ebx,eax    ;==>xr
  133.         movsx    eax, word ptr [esi]
  134.         movsx    ebp, word ptr [esi+2]
  135.         add    eax,dword ptr [matrix+16]
  136.         add    ebp,dword ptr [matrix+12]
  137.         imul    ebp
  138.         sub    eax,xy
  139.         sub    eax,ab2
  140.         sar    eax,10
  141.         mov    ebp,eax
  142.         movsx    eax,word ptr [esi+4]
  143.         imul    eax,dword ptr [matrix+20]
  144.         sar    eax,10
  145.         add    ebp,eax ;==>yr
  146.         movsx    eax, word ptr [esi]
  147.         movsx    edi, word ptr [esi+2]
  148.         add    eax,dword ptr [matrix+28]
  149.         add    edi,dword ptr [matrix+24]
  150.         imul    edi
  151.         sub    eax,xy
  152.         sub    eax,ab3
  153.         sar    eax,10
  154.         mov    edi,eax
  155.         movsx    eax,word ptr [esi+4]
  156.         imul    eax,dword ptr [matrix+32]
  157.         sar    eax,10
  158.         add    edi,eax ;==>zr
  159.             mov    word ptr [esi],bx
  160.         mov    word ptr [esi+2],bp
  161.         mov    word ptr [esi+4],di
  162.         add    esi,6    
  163.         loop    rotloop        
  164.         ret
  165.  
  166.         include    sin.255
  167.  
  168.         matrix:        
  169.         dd 9 DUP (?)    ;  c3c2  -s3c1-c3s2s1  -s3s1+c3s2c1
  170.                     ;  s3c2   c3c1-s3s2s1   c3s1+s3s2c1
  171.                     ;   -s2     -c2s1          c2c1
  172.         xy    dd ?
  173.         s3c1    dd ?
  174.         c3s2    dd ?
  175.         s3s1    dd ?
  176.         IRPC    roxi,<123>
  177.         sin&roxi     dd ?
  178.         cos&roxi    dd ?
  179.         ab&roxi        dd ?
  180.         ENDM
  181.  
  182. CODE32 ENDS
  183. END
  184.